<?php
// +----------------------------------------------------------------------
// | 幕小铺
// +----------------------------------------------------------------------
// | 版权所有 2016~2020 幕小铺科技（大连）有限公司
// +----------------------------------------------------------------------
// | 2020/03/14
// +----------------------------------------------------------------------

namespace app\erp\admin;

use app\admin\controller\Admin;
use think\Db;
use app\common\builder\ZBuilder;
/**
 * 权限管理 - 人员权限管理
 * @package app\cms\admin
 */
class AdminUser extends Admin
{
    /**
     * 首页
     * @author shiqiang
     * @return mixed
     */
    public function index(){	
		cookie('__forward__', $_SERVER['REQUEST_URI']);
		
		// 获取筛选
        $map = $this->getMap();
		if(!empty($map)){
			foreach($map as $value){
				if($value[0] == 'store_id' && $value[2] == 0){
					$map[] = ['user_type', '=', 2];
				}
			}
		}
		//数据获取
        $data = input();
		
		// 数据列表
        $data_list = model('ErpAdminUser', 'model') -> where($map) -> order('create_time desc') -> paginate();
		foreach($data_list as $key => $value){
			$store_id = $value['store_id'];
			if($store_id > 0 ){
				$store = model('ErpStore', 'model') -> find($store_id);
			
				if(!empty($store) && $value['user_type'] == 2){
					$store_title = $store['title'];
					
					$value['user_type'] = $store_title;
				}
			}	
		}
		
		$store_list = model('ErpStore') -> order('sort asc, create_time desc') -> column('id, title');
		// 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table'	)
            ->setPageTitle('人员管理') // 设置页面标题
            ->setPrimaryKey('id') // 设置主键名为username
            ->setTableName('erp_admin_user') // 设置数据表名
            ->addColumns([ // 批量添加列
                // ['__INDEX__', '序号'],
                ['id', '人员ID'],
                ['nick_name', '昵称', 'text.edit'],
                ['user_type', '权限', [1 => '后台管理员', 2=> '未绑定门店', 3=> '系统视频管理', 4=> '用户视频管理']],
                ['create_time', '创建时间', 'datetime'],
                ['right_button', '操作', 'btn']
            ])
			->addTopSelect('store_id', '选择门店', $store_list) // 添加筛选
			->setSearch(['id' => '人员ID', 'title' => '昵称']) // 设置搜索参数
			->addTopButton('add', '', ['area' => ['50%', '80%']]) // 添加授权按钮
            ->addRightButton('edit', '', ['area' => ['50%', '80%']]) // 批量添加右侧按钮
            ->addRightButton('delete') // 批量添加右侧按钮
            ->setRowList($data_list) // 设置表格数据
            ->fetch(); // 渲染页面
    }
	
	/**
     * 新增
     * @author shiqiang
     * @return mixed
     * @throws \think\Exception
     */
    public function add(){   
		// 保存数据
		if ($this->request->isPost()) {
            //数据接收
            $data = $this->request->post('', null, 'trim');
            $mobile 	= isset($data['mobile']) ? $data['mobile'] : 0;
            $nick_name 	= isset($data['nick_name']) ? $data['nick_name'] : '';
            $user_type 	= isset($data['user_type']) ? $data['user_type'] : 0;
            $store_id 	= isset($data['store_id']) ? $data['store_id'] : 0;
			
			//数据验证
			$Validate = validate('AdminUser', 'validate');
			if( !$Validate -> scene('admin_user_add') -> check($data) ){
				$this->error($Validate -> getError());
			}
			
			//判断手机号是否已经绑定账户
            $res1 = model('user_center/UcMemberMobile', 'model\user') -> getDataByMobile($mobile);
            if($res1['code'] < 0) $this->error('手机号并未绑定任何账号');
			$uid = $res1['data'] -> uid;
			
			$map = [];
			$map[] = ['uid', '=', $uid];
			$map[] = ['user_type', '=', $user_type];
			$admin_info = model('ErpAdminUser', 'model') -> where($map) -> find();
			if(!empty($admin_info)) $this->error('手机号码已被其他账号绑定');
			
			$rel = model('ErpAdminUser','model') -> addData($uid, $nick_name, $user_type, $store_id);
			if($rel['code'] == 200){
				$this->success('新增成功', null, '_parent_reload');
			}else{
				$this->error($rel['message']);
			}

		}

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('新增用户') // 设置页面标题s
            ->addFormItems([ // 批量添加表单项
                ['text', 'mobile', '手机号'],
                ['text', 'nick_name', '昵称'],
				['select', 'user_type', '用户权限', '选择用户权限', [1 => '后台管理员', 2=> '门店管理员', 3=> '系统视频管理', 4=> '用户视频管理']],
				['select', 'store_id', '门店选择', '请选择绑定的门店', model('ErpStore') -> order('sort asc, create_time desc') -> column('id, title'), '', '', 'form_group_hide'],
            ])
			->setTrigger('user_type', '2', 'store_id')
            ->fetch();
    }
	
	/**
     * 编辑
     * @author shiqiang <976162041@qq.com>
     * @return mixed
     * @throws \think\Exception
     */
    public function edit($id = ''){   
		if ($id === '') $this->error('缺少参数');
		// 保存数据
		if ($this->request->isPost()) {
            //数据接收
            $data = $this->request->post('', null, 'trim');
            $data['id'] = $id;
            $mobile 	= isset($data['mobile']) ? $data['mobile'] : 0;
            $nick_name 	= isset($data['nick_name']) ? $data['nick_name'] : '';
            $user_type 	= isset($data['user_type']) ? $data['user_type'] : 0;
            $store_id 	= isset($data['store_id']) ? $data['store_id'] : 0;
			//数据验证
			$Validate = validate('AdminUser', 'validate');
			if( !$Validate -> scene('admin_user_add') -> check($data) ){
				$this->error($Validate -> getError());
			}
			
			//判断手机号是否已经绑定账户
            $res1 = model('user_center/UcMemberMobile', 'model\user') -> getDataByMobile($mobile);
            if($res1['code'] < 0) $this->error('手机号并未绑定任何账号');
			$uid = $res1['data'] -> uid;
			
			$map = [];
			$map[] = ['id', 'neq', $id];
			$map[] = ['uid', '=', $uid];
			$map[] = ['user_type', '=', $user_type];
			$admin_info = model('ErpAdminUser', 'model') -> where($map) -> find();
            if(!empty($admin_info)) $this->error('手机号码已被其他账号绑定');
			
			$rel = model('ErpAdminUser','model') -> editData($id, $nick_name, $user_type, $store_id);
			if($rel['code'] == 200){
				$this->success('编辑成功', null, '_parent_reload');
			}else{
				$this->error($rel['message']);
			}

		}

		$info = model('ErpAdminUser', 'model') -> find($id);
        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('新增用户') // 设置页面标题s
            ->addFormItems([ // 批量添加表单项
                ['text', 'mobile', '手机号码', '', model('user_center/UcMemberMobile', 'model\user') -> where('uid', $info['uid']) -> find() -> mobile],
                ['text', 'nick_name', '昵称'],
				['select', 'user_type', '用户权限', '选择用户权限', [1 => '后台管理员', 2=> '门店管理员', 3=> '系统视频管理', 4=> '用户视频管理']],
				['select', 'store_id', '门店选择', '请选择绑定的门店', model('ErpStore') -> order('sort asc, create_time desc') -> column('id, title'), '', '', 'form_group_hide'],
            ])
			->setTrigger('user_type', '2', 'store_id')
			->setFormData($info)
            ->fetch();
    }
}

